package persi.futbol;

import java.util.ArrayList;
import java.util.List;

import persi.entities.Entidad;
import persi.enums.Posicion;
import persi.futbol.formacion.Formacion;
import persi.futbol.formacion.FormacionStrategy;
import persi.futbol.formacion.FormacionStrategyImpl;
import persi.futbol.interfaces.Nombrable;

public class Tecnico extends Entidad implements Nombrable {
	public static Tecnico crearTecnicoStandard() {
		final List<Posicion> posiciones = new ArrayList<Posicion>();
		posiciones.add(Posicion.Arquero);
		posiciones.add(Posicion.Lateral);
		posiciones.add(Posicion.Central);
		posiciones.add(Posicion.Delantero);

		final FormacionStrategyImpl strategy = new FormacionStrategyImpl(
				posiciones);
		return new Tecnico(strategy);
	}

	/**
	 * Delega en el strategy para armar el equipo
	 */
	private FormacionStrategy strategy;
	private String nombre;

	public Tecnico() {
	}

	public Tecnico(final FormacionStrategy strategy) {
		this.strategy = strategy;
	}

	Formacion armarFormacion(final Equipo equipo) {
		final Formacion formacion = this.getStrategy().armarFormacion(equipo);
		formacion.setEquipo(equipo);
		return formacion;
	}

	@Override
	public String toString() {
		return "("+this.getNombre()+")";
	}
	@Override
	public String getNombre() {
		return this.nombre;
	}

	public FormacionStrategy getStrategy() {
		return strategy;
	}

	public void setNombre(final String nombre) {
		this.nombre = nombre;
	}

	public void setStrategy(final FormacionStrategy strategy) {
		this.strategy = strategy;
	}

}
